iT邦幫忙

2025 iThome 鐵人賽

DAY 28
0

在自動化部署流程中,AWS CodeBuild 扮演著實際執行者的角色。如果說 CodePipeline 是指揮官,那麼 CodeBuild 就是真正動手將藍圖變成成品的工作坊。它是一個完全託管的建構服務,能編譯原始程式碼、執行單元測試,並生成隨時可供部署的軟體成品。
https://ithelp.ithome.com.tw/upload/images/20251012/201060941yJbv67u8o.png

使用 CodeBuild 的核心優勢在於它是一個**無伺服器(Serverless)**的服務。這意味著:

  • 無需佈建與擴展:我們不需要管理、設定或修補任何建構伺服器。CodeBuild 會自動根據需求擴展或縮減運算能力。
  • 按需付費:只需為建構程式碼所花費的實際時間付費。

CodeBuild 在 CI/CD 流程中的位置

在 CodePipeline 協調的 CI/CD 工作流程中,CodeBuild 通常位於 **Source Stage(來源階段)**之後。

  1. CodePipeline 觸發:CodePipeline 從 GitHub 取得最新的程式碼變更。
  2. 成品交付:CodePipeline 將這些原始碼交付給 CodeBuild。
  3. CodeBuild 執行:CodeBuild 在一個隔離、臨時的環境中執行建構任務。
  4. 成品輸出:建構完成後,CodeBuild 將產生的部署檔案(例如容器映像、JAR/WAR 檔案、打包的 Lambda 函數)存儲為成品(Artifacts),通常會存放在 Amazon S3 儲存桶中。

核心關鍵:buildspec.yml

CodeBuild 知道如何工作的關鍵在於 buildspec.yml 這個檔案。這個 YAML 格式的建構規格檔案必須存放在程式碼的根目錄中,它詳細定義了 CodeBuild 執行的所有步驟,涵蓋了整個建構生命週期:

階段 (Phase) 主要任務
install 安裝建構所需的依賴項(例如 npm、pip、Maven 等)。
pre_build 在正式建構前執行任何指令(例如登入 Docker Hub、執行程式碼 Linting)。
build 執行核心建構指令(例如編譯、打包程式碼)。
post_build 完成建構後的清理或發布任務(例如執行單元測試、推播 Docker 映像到 ECR)。
artifacts 指定哪些檔案應該被打包成最終的成品,供後續的 CodePipeline 部署階段使用。

匯出到試算表

整合 GitHub + CodeBuild 實作部署

在實作中,CodeBuild 配合 GitHub 提供了強大的 CI/CD 能力:

  • 自動化建構:每次程式開發者提交新程式碼到 GitHub 的指定分支(如 main),CodePipeline 會立即觸發,並將任務交給 CodeBuild。
  • 測試保障:我們在 buildspec.yml 中強制執行所有單元測試。只有當所有測試通過,CodeBuild 才會生成成品。任何測試失敗都會在 CodeBuild 階段被攔截,Pipeline 會停止,防止有問題的程式碼進入部署環境。
  • 環境彈性:CodeBuild 支援多種預建構的執行環境,例如 Node.js、Python、Java 或 Go 等。這讓我們的建構過程具備極大的靈活性,可以輕鬆應對各種技術棧的專案。

透過 CodeBuild,我們有效地將程式碼的建構、測試和成品準備這三個關鍵步驟實現了高效、可重複和自動化的流程。


上一篇
Day 27 認識 AWS CodePipeline—自動化交付的協調中樞
下一篇
Day 29 建置 Pipeline:S3 前端自動化部署(CI/CD)
系列文
來都來了,那就做一個AWS從0到100的微服務AI小平台!30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言